// pages/dish/dish.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    searchValue: '',
    dishList: [],
    pageNumber: 1,
    hasMoreDishes: true,
    isLoadingDishes: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getDishList()
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.getDishList(true)
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.hasMoreDishes && !this.data.isLoadingDishes) {
      this.getDishList()
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 搜索框输入事件
   */
  onSearchInput(e) {
    const searchValue = e.detail.value
    this.setData({
      searchValue: searchValue
    })
  },

  /**
   * 搜索按钮点击事件
   */
  onSearch() {
    this.setData({
      dishList: [],
      pageNumber: 1,
      hasMoreDishes: true
    })
    this.getDishList(true)
  },

  /**
   * 获取菜品列表
   */
  getDishList(isRefresh = false) {
    if (this.data.isLoadingDishes) return
    
    const pageNumber = isRefresh ? 1 : this.data.pageNumber
    
    this.setData({
      isLoadingDishes: true
    })

    const params = {
      name: this.data.searchValue,
      page_number: 0,
      page_size: 10
    }

    wx.request({
      url: 'https://jingliange.com/api/v1/menu/getMenu',
      method: 'POST',
      data: params,
      header: {
        'content-type': 'application/json'
      },
      success: (res) => {
        console.log('获取菜品列表成功:', res.data)
        if (res.statusCode === 200 && res.data.code === 200) {
          const newDishes = res.data.data || []
          
          if (isRefresh) {
            // 刷新时替换数据
            this.setData({
              dishList: newDishes,
              pageNumber: 1,
              hasMoreDishes: newDishes.length > 0
            })
            wx.showToast({
              title: '刷新成功',
              icon: 'success',
              duration: 1000
            })
          } else {
            // 加载更多时追加数据
            this.setData({
              dishList: [...this.data.dishList, ...newDishes],
              pageNumber: pageNumber + 1,
              hasMoreDishes: newDishes.length > 0
            })
          }
        } else {
          wx.showToast({
            title: res.data.msg || '获取菜品列表失败',
            icon: 'none',
            duration: 2000
          })
        }
      },
      fail: (err) => {
        console.error('获取菜品列表失败:', err)
        wx.showToast({
          title: '网络请求失败',
          icon: 'none',
          duration: 2000
        })
      },
      complete: () => {
        this.setData({
          isLoadingDishes: false
        })
        wx.stopPullDownRefresh()
      }
    })
  },

  /**
   * 点赞功能
   */
  onLike(e) {
    const { index } = e.currentTarget.dataset
    const dishList = [...this.data.dishList]
    const dish = dishList[index]
    
    if (dish.liked) {
      // 取消点赞
      dish.like_count = Math.max(0, dish.like_count - 1)
      dish.liked = false
    } else {
      // 点赞
      dish.like_count += 1
      dish.liked = true
    }
    
    this.setData({
      dishList: dishList
    })
  },

  /**
   * 图片加载失败处理
   */
  onImageError(e) {
    console.log('图片加载失败:', e.detail)
    // 可以在这里添加默认图片逻辑
  },

  /**
   * 跳转到菜品详情页
   */
  goToDishDetail(e) {
    const { id } = e.currentTarget.dataset
    wx.navigateTo({
      url: `/pages/dishInfo/dishInfo?id=${id}`
    })
  }
})